(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=Karamov Ilshat aka KAA (kaa2@pisem.net) Title=Exler (RU) Description=Import from www.exler.ru Site=www.exler.ru Language=RU Version=1.1 Requires=3.5.0 Comments=Доступ к рецензиям Алекса Экслера, размещенных на сайте www.exler.ru License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. GetInfo=1 [Options] ***************************************************) program Exler; const BaseAddress = 'http://www.exler.ru/films/'; var MovieName: string; //============================================================================== procedure AnalyzePage(); var Page: TStringList; BeginPos, EndPos: Integer; AddressText, HTMLText : string; begin Page := TStringList.Create; PickTreeClear; PickTreeAdd('Рецензии Экслера на фильмы в алфавитном порядке', ''); AddAlphabet(); if PickTreeExec(AddressText) then begin Page.Text := GetPage(AddressText); HTMLText := Page.Text; end; if Pos('Фильмы на букву', HTMLText) <> 0 then begin BeginPos := Pos('Фильмы на букву', HTMLText); HTMLText := Copy(HTMLText, BeginPos+Length('Фильмы на букву'), Length(HTMLText)); BeginPos := Pos('
', HTMLText); HTMLText := Copy(HTMLText, BeginPos+Length('
'), Length(HTMLText)); EndPos := Pos('', HTMLText); HTMLText := Copy(HTMLText, 0, EndPos-1); Page.Text:=Trim(HTMLText); PickTreeClear; PickTreeAdd('Фильмы на выбранную букву', ''); AddMoviesTitles(Page); if PickTreeExec(AddressText) then begin // URL if CanSetField(fieldURL) then SetField(fieldURL, AddressText); Page.Text := GetPage(AddressText); AnalyzeVideoPage(Page); end; end; Page.Free; end; //============================================================================== procedure AddMoviesTitles(Page: TStringList); var i: integer; Line: string; MovieTitle, MovieAddress: string; StartPos, EndPos: Integer; begin for i:=0 to Page.Count-1 do begin Line := Page.GetString(i); if Line='' then Continue; StartPos := Pos('', Line); MovieAddress := BaseAddress+Copy(Line, StartPos, EndPos-1); StartPos := Pos('">', Line); EndPos := Pos('', Line); MovieTitle := Copy(Line, StartPos+Length('">'), EndPos-1); HTMLRemoveTags(MovieTitle); PickTreeAdd(MovieTitle, MovieAddress); end; end; //============================================================================== procedure AddAlphabet(); var i: integer; Alphabet, Addresses, MovieTitle, MovieAddress: string; StartPos, EndPos: Integer; begin Alphabet :='А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я 1-10 '; Addresses:='a b v g d e j z i k l m n o p r s t y f h c ch sh sch ae u ya 1-10 '; StartPos:=1; for i:=1 to 29 do begin EndPos:=Pos(' ', Alphabet); MovieTitle := Copy(Alphabet, 1, EndPos); Alphabet:=Copy(Alphabet, EndPos+1, Length(Alphabet)); EndPos:=Pos(' ', Addresses); MovieAddress := Copy(Addresses, 1, EndPos-1); Addresses:=Copy(Addresses, EndPos+1, Length(Addresses)); PickTreeAdd(MovieTitle, BaseAddress+MovieAddress+'.htm'); end; end; //============================================================================== procedure AnalyzeVideoPage(Page: TStringList); var HTMLText, HTMLText1: string; BeginPos, EndPos: Integer; MovieName, MovieNameTrans, MovieNameOrig, MovieDirector, MovieYear, MovieCategory, MovieRating, MoviePictureAddress, MovieLength, MovieCountry, MovieActors, MovieComments: string; begin HTMLText:=Page.Text; HTMLText:=StringReplace(HTMLText, #13#10+' ', ' '); HTMLText:=StringReplace(HTMLText, #13#10+' ', ' '); HTMLText:=StringReplace(HTMLText, #13#10+' ', ' '); HTMLText:=StringReplace(HTMLText, '"', '"'); HTMLText:=StringReplace(HTMLText, ' ', ' '); BeginPos := Pos('
', HTMLText)+Length('
');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Жанр
if CanSetField(fieldCategory) then
begin
EndPos := Pos('"', HTMLText);
MovieCategory := Trim(Copy(HTMLText, 0, EndPos-1));
SetField(fieldCategory, MovieCategory);
end;
BeginPos := Pos('"', HTMLText)+Length('"');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Наименование
if CanSetField(fieldTranslatedTitle) then
begin
EndPos := Pos('"', HTMLText);
MovieNameTrans := Trim(Copy(HTMLText, 0, EndPos-1));
SetField(fieldTranslatedTitle, MovieNameTrans);
end;
BeginPos := Pos('(', HTMLText)+Length('(');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Оригинальное наименование
if CanSetField(fieldOriginalTitle) then
begin
EndPos := Pos(')', HTMLText);
MovieNameOrig := Trim(Copy(HTMLText, 0, EndPos-1));
SetField(fieldOriginalTitle, MovieNameOrig);
end;
BeginPos := Pos(')', HTMLText)+Length(')');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Режиссеры
if CanSetField(fieldDirector) then
begin
BeginPos := Pos('Режиссер', HTMLText)+Length('Режиссер');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
BeginPos := Pos('">', HTMLText)+Length('">');
EndPos := Pos('.', HTMLText);
MovieDirector := Trim(Copy(HTMLText, BeginPos, EndPos-BeginPos));
HTMLRemoveTags(MovieDirector);
MovieDirector:=Trim(StringReplace(MovieDirector, '–', ''));
SetField(fieldDirector, MovieDirector);
end;
BeginPos := Pos('.', HTMLText)+Length('.');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Актеры
if CanSetField(fieldActors) then
begin
BeginPos := Pos('В роляx', HTMLText)+Length('В ролях');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
BeginPos := Pos('">', HTMLText)+Length('">');
EndPos := Pos('.', HTMLText);
MovieActors := Trim(Copy(HTMLText, BeginPos, EndPos-BeginPos));
HTMLRemoveTags(MovieActors);
MovieActors:=Trim(StringReplace(MovieActors, '–', ''));
SetField(fieldActors, MovieActors);
end;
BeginPos := Pos('.', HTMLText)+Length('.');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Страна
if CanSetField(fieldCountry) then
begin
EndPos := Pos('.', HTMLText);
MovieCountry := Trim(Copy(HTMLText, 0, EndPos-1));
SetField(fieldCountry, MovieCountry);
end;
BeginPos := Pos('.', HTMLText)+Length('.');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Год
if CanSetField(fieldYear) then
begin
EndPos := Pos('.', HTMLText);
MovieYear := Trim(Copy(HTMLText, 0, EndPos-1));
SetField(fieldYear, MovieYear);
end;
BeginPos := Pos('.', HTMLText)+Length('.');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Продолжительность
if CanSetField(fieldLength) then
begin
EndPos := Pos('мин.', HTMLText);
MovieLength := Trim(Copy(HTMLText, 0, EndPos-1));
SetField(fieldLength, MovieLength);
end;
BeginPos := Pos('.', HTMLText)+Length('.');
HTMLText := Copy(HTMLText, BeginPos, Length(HTMLText));
// Адрес картинки
BeginPos := Pos('src="', HTMLText)+Length('src="');
EndPos := Pos('" align', HTMLText);
MoviePictureAddress := BaseAddress+Trim(Copy(HTMLText, BeginPos, EndPos-BeginPos));
// Коментарий-отзыв
if CanSetField(fieldComments) then
begin
BeginPos := Pos('', HTMLText)+Length('');
EndPos := Pos('